/**
 *
 */
package edu.zut.hb.software.base.service;

import java.io.Serializable;
import java.util.List;

import edu.zut.hb.software.base.domain.BaseTreeEntity;

/**
 * @author Mie
 *
 */
public interface GenericTreeManager <T extends BaseTreeEntity<T, PK>, PK extends Serializable>
extends GenericStudentManager<T, PK>{
	/**
	 * 获取指定id的全部祖先实体集合；
	 *
	 * @param id  id code for specified entity
	 * @return ancestor list
	 */
	public List<T> getAncestors(PK id);

	/**
	 * 获取指定id的直接孩子实体集合；
	 *
	 * @param id id code for specified entity
	 * @return children list
	 */
	public List<T> getChildren(PK id);

	/**
	 * 获取指定id的全部子孙实体集合；
	 *
	 * @param id id code for specified entity
	 * @return all descentants list
	 */
	public List<T> getDescendants(PK id);

	/**
	 * 获取根节点实体集合
	 *
	 * @return all roots list
	 */
	public List<T> getRoot();

}
